﻿using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using BotDetector.Core.Detector;
using BotDetector.Core.Search;
using BotDetector.Core.Model;

namespace BotDetector.Tests
{
    [TestClass]
    public class BotDetectorTests
    {
        GoogleSearch googleSearch = new GoogleSearch();
        BotDetector.Core.Detector.BotDetector botDetector = new BotDetector.Core.Detector.BotDetector();

        [TestMethod]
        public void IsBot_NotBotInput1_TestPasses()
        {
            string phrase = "În ziua de azi, conceptele geometriei au fost generalizate către un nivel mai înalt de abstractizare și complexitate, și a fost făcută obiect de studiu pentru metode de calcul și algebră abstractă, așa că multe ramuri moderne ale geometriei mai pot fi recunoscute ca fiind descendente ale geometriei de la începuturile ei.";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsFalse(isBot);
        }

        [TestMethod]
        public void IsBot_NotBotInput2_TestPasses()
        {
            string phrase = "în 56 de meciuri pentru echipa națională și în peste 700 de meciuri pentru echipele sale de club în 35 de ani de carieră, fotbalistul englez Stanley Matthews nu a primit niciodată un cartonaș galben sau roșu și a primit titlul de Sir în timp ce încă mai juca fotbal la 50 de ani";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsFalse(isBot);
        }

        [TestMethod]
        public void IsBot_NotBotInput3_TestPasses()
        {
            string phrase = "De asemenea, functia Dual SIM iti permite separarea convorbirilor business de cele personale si se dovedeste a fi extrem de utila pentru cei care calatoresc mult, oferindu-le posibilitatea de a avea un sim pentru acasa si celalalt pentru calatorii.";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsFalse(isBot);
        }

        [TestMethod]
        public void IsBot_NotBotInput4_TestPasses()
        {
            string phrase = "Uleiul de avocado este unul dintre cele mai utilizate uleiuri in cosmetica naturala fiind recunoscut pentru numeroasele lui beneficii asupra tenului";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsFalse(isBot);
        }

        [TestMethod]
        public void IsBot_NotBotInput5_TestPasses()
        {
            string phrase = "Eleganta otelului inoxidabil combinata cu o constructie durabila si un design precis. Ia-l si nu ii vei mai da drumul niciodata";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsFalse(isBot);
        }

        [TestMethod]
        public void IsBot_NotBotInput6_TestPasses()
        {
            string phrase = "va transformam nunta intr-o experienta memorabila si va asiguram ca va fi ceea ce ati visat sau chiar mai mult";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsFalse(isBot);
        }

        [TestMethod]
        public void IsBot_NotBotInput7_TestPasses()
        {
            string phrase = "Datorita desing-ului minimalist, fara butoane laterale, te bucuri de stabilitate, confort si stil in acelasi timp";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsFalse(isBot);
        }

        [TestMethod]
        public void IsBot_NotBotInput8_TestPasses()
        {
            string phrase = "executam mobilier la comanda: bucatarii, dressinguri, comode, dormitoare la cele mai inalte standarde de calitate";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsFalse(isBot);
        }

        [TestMethod]
        public void IsBot_NotBotInput9_TestPasses()
        {
            string phrase = "Locuri de munca in strainatate mecanic auto cu experienta";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsFalse(isBot);
        }

        [TestMethod]
        public void IsBot_NotBotInput10_TestPasses()
        {
            string phrase = "Afla toate detaliile despre aparatele foto folosite de marea majoritate a utilizatorilor";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsFalse(isBot);
        }

        [TestMethod]
        public void IsBot_NotBotInput11_TestPasses()
        {
            string phrase = "care sunt cele mai bune storcatoare de fructe si legume";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsFalse(isBot);
        }

        [TestMethod]
        public void IsBot_NotBotInput12_TestPasses()
        {
            string phrase = "Vand semanatoare de prasitoare marka Monosem";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsFalse(isBot);
        }

        [TestMethod]
        public void IsBot_NotBotInput13_TestPasses()
        {
            string phrase = "Vand pistol presiune apa,nou";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsFalse(isBot);
        }

        [TestMethod]
        public void IsBot_NotBotInput14_TestPasses()
        {
            string phrase = "Panza RUSTICA pentru AMENAJARI Diverse";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsFalse(isBot);
        }

        [TestMethod]
        public void IsBot_NotBotInput15_TestPasses()
        {
            string phrase = "fata de masa rotunda goblen";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsFalse(isBot);
        }

        [TestMethod]
        public void IsBot_NotBotInput16_TestPasses()
        {
            string phrase = "Autotractor Renault Magnum 500 DXi E4";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsFalse(isBot);
        }

        [TestMethod]
        public void IsBot_NotBotInput17_TestPasses()
        {
            string phrase = "Nissan-3,5t /schimb+ PLATESC DIFERENTA cu prelata";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsFalse(isBot);
        }

        [TestMethod]
        public void IsBot_BotInput1_TestPasses()
        {

            string phrase = "Daca lucrezi, esti somer, pensionar, student, vrei si ai nevoie sa iti schimbi situatia financiara, vrei un job serios unde sa muncesti dar sa si castigi, ai gasit locul potrivit. O sansa deosebita pentru cei care vor sa lucreze ca operatori online, part-time (3 ore pe zi) si la domiciliu";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsTrue(isBot);
        }

        [TestMethod]
        public void IsBot_BotInput2_TestPasses()
        {
            string phrase = "Materiale digitale - e-book-uri şi softuri, programe şi ghiduri internet, bonus-uri cu conţinut divers, sfaturi şi secrete pentru viaţă şi afaceri online, cu drepturi totale de proprietate, pentru revindere în copii de n ori";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsTrue(isBot);
        }

        [TestMethod]
        public void IsBot_BotInput3_TestPasses()
        {
            string phrase = "Cautam de urgenta oameni foarte hotarati si foarte seriosi care vor sa aiba un castig garantat, cu o munca interesanta si foarte usoara de numai 3 ore pe zi";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsTrue(isBot);
        }

        [TestMethod]
        public void IsBot_BotInput4_TestPasses()
        {
            string phrase = "In loc sa cautati in alta parte, opriti-va aici! Veti vedea ca zilnic tot mai multi oameni s-au convins de seriozitatea noastra, pentru ca oferim din start contract legal si punem imediat la dispozitia tuturor dovada platii!";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsTrue(isBot);
        }

        [TestMethod]
        public void IsBot_BotInput6_TestPasses()
        {
            string phrase = "Sfideaza criza si asigura-ti un loc de munca pe viata! Castigi bani învatând. Lucrezi de acasa. Daca esti chiar si numai curios";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsTrue(isBot);
        }

        [TestMethod]
        public void IsBot_BotInput7_TestPasses()
        {
            string phrase = "Sigur nu ai mai intalnit aceasta oferta! Este ceva nou si absolut serios! Rezultate garantate pentru oricine! Vei fi multumit";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsTrue(isBot);
        }

        [TestMethod]
        public void IsBot_BotInput8_TestPasses()
        {
            string phrase = "Banii nu iti mai ajung? Ai nevoie de un venit suplimentar? Alege sa lucrezi, online, de acasa, in timpul liber sau cand doresti";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsTrue(isBot);
        }

        [TestMethod]
        public void IsBot_BotInput9_TestPasses()
        {
            string phrase = "Un job nou pentru toate varstele: operatori online, special pentru cei care au cunostinte minime de folosire a calculatorului! ";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsTrue(isBot);
        }

        [TestMethod]
        public void IsBot_BotInput10_TestPasses()
        {
            string phrase = "ANUNT IMPORTANT PENTRU TINE! Timpul este capital pretios, investeste-l cu folos! Consultant firma multinationala ofer activitate part-time";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsTrue(isBot);
        }

        [TestMethod]
        public void IsBot_BotInput11_TestPasses()
        {
            string phrase = "Cursuri afaceri online GRATUIT. Daca vrei sa inveti cum sa castigi cel putin 300 $ pe luna";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsTrue(isBot);
        }

        [TestMethod]
        public void IsBot_BotInput12_TestPasses()
        {
            string phrase = "50 dolari reali gratuiti la Pokerstars";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsTrue(isBot);
        }

        [TestMethod]
        public void IsBot_BotInput13_TestPasses()
        {
            string phrase = "HAINE IEFTINE FIRMA afla pe myeconomist.info";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsTrue(isBot);
        }

        [TestMethod]
        public void IsBot_BotInput14_TestPasses()
        {
            string phrase = "Haine si accesorii dama la preturi incredibile";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsTrue(isBot);
        }

        [TestMethod]
        public void IsBot_BotInput15_TestPasses()
        {
            string phrase = "Cel mai tare site de amuzament";
            ResultItemList resultList = googleSearch.Search(phrase);

            bool isBot = botDetector.IsBot(resultList);

            Assert.IsTrue(isBot);
        }
    }
}
